package h_eekwan.basic;

import java.util.Scanner;

public class J08_Array {

	public static void main(String[] args) {
		// 배열 array
		// 동일한 종류의 여러개의 값들을
		// 저장할 수 있는 자료구조
		// 배열에 저장되는 내용을 요소(element)라 하고
		// 각 값은 위치값(index)을 이용해서
		// 접근할 수 있음
		// 위치값은 0부터 시작
		
		int numbers[]; 		// 정수형 배열
		double taxes[];		// 실수형 배열
		char names[];		// 문자 배열
				
		// 배열 생성
		numbers = new int[10];		//	10개의 정수 저장
		taxes = new double[10];		//	10개의 실수 저장
		names = new char[10];		//	10개의 문자 저장
		System.out.println(numbers);
		System.out.println(taxes);
		System.out.println(names);
		
		
		System.out.println(taxes[0]);
		System.out.println(taxes[1]);
		System.out.println(taxes[7]);

		names[0]= '희';
		names[1]= '관';
		names[2]= '이';
		System.out.println(names);
		
		System.out.print(names[0]);
		System.out.print(names[1]);
		System.out.println(names[2]);
		
		// numbers에 1 ~ 10까지 값 저장
		
		numbers[0] = 1;
		numbers[1] = 2;
		numbers[2] = 3;
		numbers[3] = 4;
		numbers[4] = 5;
		numbers[5] = 6;
		numbers[6] = 7;
		numbers[7] = 8;
		numbers[8] = 9;
		numbers[9] = 10;

		System.out.println(numbers[1]);
		
		// 반복문을 이용한 배열 처리
		for(int i = 0; i <10; ++i){
			System.out.println(i);
					
		}
//		for(int i = 1; i <= 10; ++i)
//			numbers[i-1] = i;
		
		
		// 키보드로 입력받은 정수 5개를 그대로 출력
		Scanner sc = new Scanner(System.in);
		System.out.println(" 정수 5개를 입력하세요");		
/*		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		int num3 = sc.nextInt();
		int num4 = sc.nextInt();
		int num5 = sc.nextInt();*/
		// 각 코드에 공통요소가 없기 때문에 
		// 반복문으로 변경 불가!
		int nums[] = new int[5];
/*		nums[0] = sc.nextInt();
		nums[1] = sc.nextInt();
		nums[2] = sc.nextInt();
		nums[3] = sc.nextInt();
		nums[4] = sc.nextInt();*/
		// 각 코드에 공통요소가 있으므로
		// 반복문으로 변경 가능 !
		
		for(int i = 0 ; i<5; ++i){
			nums[i] = sc.nextInt();
		
		}
		// 배열에 저장된 값을 출력하기
/*		System.out.println(nums[0]);
		System.out.println(nums[1]);
		System.out.println(nums[2]);
		System.out.println(nums[3]);
		System.out.println(nums[4]);*/
		for(int i = 0 ;i<5;++i){
		System.out.println(nums[i]);
		}
		
		
		// 배열을 각 요소를 단순히 순차적으로
		// 처리할 목적이면 for-each문으로 처리하는 것이 좋음
		
		for(int i : nums)
			System.out.println( i );
		
		
		sc.close();
		
		// 배열의 크기 알아내기
		
		int size = nums.length;
		System.out.println(size);
		System.out.println( nums.length);
		System.out.println(numbers.length);
		
		// 배열 사용시 볼 수 있는 오류
		double vals[] = new double[100];
		//	vals[0] = 100.0;
		// vals[100] = 100.0;
		// ArryIndexOutOfBoundsException 발생
		// 배열의 경계를 넘어섰다는 오류
		// 0 부터시작하기 때문에 100개의 저장소는 99번까지임
		
		vals[0] = sc.nextDouble();
		// 스캐너에서 a를 입력하면
		// 오류 InputMismatchException 발생
		
		
		
		
	}

}
